#include"apue.h"
#include"ftp.h"

char Work_home[512];

void sigchld_fun(int signo)
{
	int status=0;
	pid_t pid;

	pid=wait(&status);
	printf("child %d is die,return value:%d\n",pid, WEXITSTATUS(status));
}
int main(int argc,char *argv[])
{	
	int port;
	int ret;
	if(argv[1]!=NULL)
	{
		port=atoi(argv[1]);
	}else
	{
		port=DEFAULT_PORT;
	}
	//创建套接字并绑定端口号和ip地址
	int sockfd;

	sockfd=init_sock(port);
	if(sockfd<0)
	{
		return -1;
	}
	//创建管道 消息对列 共享内存
	int recvProcToOptProc_pipe[2];

	signal(SIGCHLD, sigchld_fun);
	ret=init_ProcSrc(recvProcToOptProc_pipe);
	if(ret<0)
	{
		return -1;
	}
	pid_t pid;
	pid=fork();
	if(pid<0)
	{
		perror("fork");
		return 1;
	}
	if(pid==0)
	{	
//		signal(SIGCHLD,SIG_IGN);
		close(recvProcToOptProc_pipe[1]);
		//处理进程
		optProc_fun(recvProcToOptProc_pipe[0],sockfd);
		close(recvProcToOptProc_pipe[0]);
	}else
	{	
		close(recvProcToOptProc_pipe[0]);
		//接受进程
		recvProc_fun(sockfd,recvProcToOptProc_pipe[1]);
		close(recvProcToOptProc_pipe[1]);
	}
	close(sockfd);
	return 0;
}
